#pragma once
#include <iostream>
#include <string>
#include <sys/socket.h> // 主要socket函数和结构
#include <netinet/in.h> // IPv4/IPv6地址结构
#include <arpa/inet.h>  // 地址转换函数(如inet_pton)
#include <unistd.h>     // close()函数
#include <cstdint>
class InetAddr
{
private:
    void Trans(struct sockaddr_in add)
    {
        //从客户端收到的就是网络字节序，需要转换回去
        _localport = ntohs(add.sin_port);
        //接受一个 struct in_addr 类型的参数，而不是 s_addr（uint32_t）
        /////       含多个字段（包括s_addr)
        _localip = inet_ntoa(add.sin_addr);
    }

public:
    InetAddr()
    {
       // Trans(_add);
    }
    InetAddr(struct sockaddr_in add) : _add(add)
    {
        Trans(_add);
    }
    uint16_t Port()
    {
        return _localport;
    }
    std::string Ip()
    {
        return _localip;
    }
    ~InetAddr()
    {
    }

private:
    struct sockaddr_in _add;
    uint16_t _localport;  // 16位端口号
    std::string _localip; // 32为ip
};
